#pragma once
#include "Constants.cpp"
#include <iostream>
#include <fstream>

class Floor
{
protected:
	int x, y, z;
	FloorState state;
	ObjectType flrObj;
	FloorType	type;


public:
//
//Constructors
//
	Floor (int cx, int cy, int cz, ObjectType object);
	//Extra bit will come in useful for directional based things.
	Floor (int cx, int cy, int cz, int extraBit, ObjectType object); 
	Floor (int cx, int cy, int cz, int extraBit);
	Floor (int cx, int cy, int cz);
	Floor();
	~Floor(void);

//
//Getters
//
	int getX();
	int getY();
	int getZ();
	FloorState getFloorState();
	FloorType getType();
	ObjectType getObjectType();	
	bool freeSpace();

//
//Setters
//
	virtual void changeObject(ObjectType type);
	virtual void changeState(FloorState cState);

//
//Virtual Methods
//
	virtual void walkOffEvent();	 //Event that occurs after a walk off of the floor
	virtual void walkOnEvent(); //Event that occurs after a walk on of a floor
};



//***Floor***
//*none
//*Basic
//*Fire
//*Ice
//*Mud
//*Gravel
//*PushPad
//*Teleport
//*Trampoline
//*Dissolving
//*Generators
//***********